package main

import (
	"fmt"
	"strings"
)

func main() {
	// str := "你好北京"
	// r := []rune(str)
	// for i := 0; i < len(r); i++ {
	// 	fmt.Printf("%c", r[i])
	// }
	// fmt.Println()

	//字符串转整数
	// i, err := strconv.Atoi("hello")
	// if err != nil {
	// 	fmt.Println("转换错误", err)
	// } else {
	// 	fmt.Println("结果是=", i)
	// }

	//整数转字符串
	// str := strconv.Itoa(546)
	// fmt.Printf("类型为%T,值为%v", str, str)

	//字符串转 byte[]
	// var bytes = []byte("hello go")
	// fmt.Printf("bytes=%v \n", bytes)

	//[]byte 转 string
	// bytes := []byte{97, 98, 99}
	// fmt.Printf("bytes type is %T,vaule is %v\n", bytes, bytes)
	// str := string(bytes)
	// fmt.Printf("str type is %T,vaule is %v\n", str, str)

	//10进制转 2、8、16进制
	// str := strconv.FormatInt(123, 2)
	// fmt.Printf("str value is %v\n", str)
	// str2 := strconv.FormatInt(123, 6)
	// fmt.Printf("123的16进制数为%v", str2)

	//判断子字符串是否在某个字符串中
	// b := strings.Contains("abcdde", "dd")
	// fmt.Printf("b type=%T, b value=%v\n", b, b)

	//子字符串出现的次数
	// count := strings.Count("abcdde", "d")
	// fmt.Printf("count type=%T, count value=%d\n", count, count)

	//不区分大小写对比字符串是否相等 （==是考虑大小写的）
	// isEqFold := strings.EqualFold("abc", "aBc")
	// fmt.Printf("isEqFold type=%T, isEqFold value=%v\n", isEqFold, isEqFold)
	// isAllEq := "abc" == "aBc"
	// fmt.Printf("isAllEq type=%T, isAllEq value=%v\n", isAllEq, isAllEq)

	//子字符串第一次出现的下标位置
	// firstIndex := strings.Index("aslkfjalkj", "al")
	// fmt.Println(firstIndex)

	//子字符串最后一次出现的下标位置
	// lastIndex := strings.LastIndex("OO read this book on foot", "oo")
	// fmt.Println(lastIndex)

	//替换指定子字符串
	// parentStr := "Hello Go ! I love you , Go!"
	// subStr := "Go"
	// resStr := strings.Replace(parentStr, subStr, "Golang", -1)
	// fmt.Println(resStr)
	// fmt.Print(parentStr)

	//按指定字符串分割 返回 strArr
	// pStr := "Hello,Go,you are so attractive"
	// strArr := strings.Split(pStr, ",")
	// for i := 0; i < len(strArr); i++ {
	// 	fmt.Printf("str[%d]=%v\n", i, strArr[i])
	// }
	// fmt.Println(strArr)

	//大小写转换
	// str := "Hello,Golang"
	// str = strings.ToUpper(str)
	// fmt.Println(str)
	// str = strings.ToLower(str)
	// fmt.Println(str)

	//将字符串左右两边的空格去掉
	// str := " Hello, Golang    "
	// resStr := strings.TrimSpace(str)  planA
	// resStr := strings.Trim(str, " ")  planB
	// fmt.Println(str)
	// fmt.Println(resStr)

	//去除左右两边指定子字符串
	// pStr := "!Hello! Golang!"
	// resStr1 := strings.Trim(pStr, "!")
	// fmt.Println(resStr1)

	//去左边指定子字符串
	// resStr2 := strings.TrimLeft(pStr, "!")
	// fmt.Println(resStr2)

	//去除右边子字符串
	// resStr3 := strings.TrimRight(pStr, "!")
	// fmt.Println(resStr3)

	//判断字符串已某个子字符串开头
	parentStr := "ftp://192.168.10.1"
	hasPre := strings.HasPrefix(parentStr, "ftp")
	fmt.Println(hasPre)

	//以某个子字符串结尾
	hassuffix := strings.HasSuffix(parentStr, ".1")
	fmt.Println(hassuffix)

}
